package com.gxa.mapper;

import com.gxa.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface ClosePatientMapper {
    /**
     * 查询密接人员列表
     * @return
     */
    List<DistrictSysContact> findClosePatientList();

    /**
     * 根据条件查询密接人员列表
     * @param name
     * @param sex
     * @param idNum
     * @param phoneNum
     * @param address
     * @param registrant
     * @param registrationDate
     * @param jointType
     * @param status
     * @return
     */
    List<DistrictSysContact> findClosePatientListByConditions(@Param("name")String name, @Param("sex")String sex, @Param("idNum")String idNum,@Param("phoneNum") String phoneNum,@Param("address") String address, @Param("registrant")String registrant, @Param("registrationDate")Date registrationDate, @Param("jointType")String jointType, @Param("status")String status);

    /**
     * 根据ID查询密接人员
     * @param id
     * @return
     */
    DistrictSysContact findClosePatientById(int id);

    /**
     * 添加密接人员/次密接/一般接触
     * @param districtSysContact
     * @return
     */
    int addClosePatient(DistrictSysContact districtSysContact);

    /**
     * 修改密接人员信息
     * @param districtSysContact
     * @return
     */
    int updateClosePatient(DistrictSysContact districtSysContact);

    /**
     * 查找接种信息
     * @param patientId
     * @return
     */
    List<PatientVaccination> findPatientVaccinationByPatientId(int patientId);

    /**
     * 添加接种信息
     * @param patientVaccination
     * @return
     */
    int addPatientVaccination(PatientVaccination patientVaccination);

    /**
     * 编辑接种信息
     * @param patientVaccination
     * @return
     */
    int updatePatientVaccination(PatientVaccination patientVaccination);

    /**
     * 添加接种信息
     * @param map
     * @return
     */
    int addPatientidVaccinationid(Map map);

    /**
     * 删除密接人员
     * @param id
     * @return
     */
    int delClosePatient(int id);

    /**
     * 删除接种记录
     * @param id
     * @return
     */
    int delPatientVaccination(int id);

    /**
     * 删除中间表
     * @param id
     * @return
     */
    int delPatientidVaccinationid(int id);

    /**
     * 查询基本信息
     * @param id
     * @return
     */
    DistrictSysContact selectBasicInfo(int id );

    /**
     * 查询关联病例名字
     * @param id
     * @return
     */
    String findConfirmedPatientNameById(int id);

    /**
     * 查询轨迹调查列表
     * @param id
     * @return
     */
    List<PatientTrack> finddiseaseSurvey(int id);

    /**
     * 查询轨迹调查
     * @param id
     * @return
     */
    PatientTrack finddiseaseSurveyById(Integer id);

    /**
     * 添加轨迹调查
     * @param patientTrack
     * @return
     */
    int addDiseaseSurvey(PatientTrack patientTrack);

    /**
     * 修改轨迹调查
     * @param patientTrack
     * @return
     */
    int updateDiseaseSurvey(PatientTrack patientTrack);

    /**
     * 删除轨迹调查
     * @param id
     * @return
     */
    int deldiseaseSurvey(int id);

    /**
     * 查询关联次密接人员列表
     * @param id
     * @return
     */
    List<DistrictSysContact>  selectNextCrowded(int id);


    /**
     * 条件查询次密接人员列表
     * @param id
     * @param name
     * @param sex
     * @param idNum
     * @param phoneNum
     * @return
     */
    List<DistrictSysContact> selectNextCrowdedByConditions(@Param("id") int id,@Param("name")String name, @Param("sex")String sex, @Param("idNum")String idNum,@Param("phoneNum") String phoneNum);

    /**
     * 查询转运距离
     * @param id
     * @return
     */
    TransferRecord selectTrack(int id );

    /**
     * 查询隔离接收记录
     * @param id
     * @return
     */
    IsolationReceivingRecord selectIsolationReceivingRecord(int id );

    /**
     * 查询采样记录
     * @param id
     * @return
     */
    List<PatientSample> selectPatientSample(int id);

    /**
     * 查询接触隔离记录
     * @param id
     * @return
     */
    DeIsolationRecord selectDeisolationRecord(int id);

    /**
     * 查询跟踪转运日志
     * @param id
     * @return
     */
    List<TransitLog> selectTrackTransshipmentLog(int id);

    /**
     * 查询数据日志
     * @param id
     * @return
     */
    List<DataLog> finddataLogs(int id );

    /**
     * 添加数据日志
     * @param dataLog
     * @return
     */
    int addDataLog(DataLog dataLog);


    /**
     * 根据用户名查询系统用户组织
     */
    String findOrganizationByUserName(@Param("userName") String userName);


    /**
     * 添加系统日志
     */

    int addSysActionLog(SysActionLog sysActionLog);

}
